--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Taskfile.yml v4.7.2-rc.1 (b777193f) Text, 18.11 KB
Tff7b72versionTb4b4b4: Ta5d6ff"Ta5d6ff3Ta5d6ff"
Tff7b72varsTb4b4b4:
Tff7b72PYTHONTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${PYTHON:-python}"
Tff7b72NPMTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${NPM:-pnpm}"
Tff7b72NPM_INSTALL_FLAGSTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ff'Ta5d6ffifTe6edf3 Ta5d6ff[Te6edf3 Ta5d6ff"${MESHCHATX_OFFLINE_BUILD}"Te6edf3 Ta5d6ff=Te6edf3 Ta5d6ff"1"Te6edf3 Ta5d6ff];Te6edf3 Ta5d6ffthenTe6edf3 Ta5d6ffechoTe6edf3 Ta5d6ff"--offline";Te6edf3 Ta5d6ffelseTe6edf3 Ta5d6ffechoTe6edf3 Ta5d6ff"";Te6edf3 Ta5d6fffiTa5d6ff'
Tff7b72UV_SYNC_FLAGSTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ff'Ta5d6ffifTe6edf3 Ta5d6ff[Te6edf3 Ta5d6ff"${MESHCHATX_OFFLINE_BUILD}"Te6edf3 Ta5d6ff=Te6edf3 Ta5d6ff"1"Te6edf3 Ta5d6ff];Te6edf3 Ta5d6ffthenTe6edf3 Ta5d6ffechoTe6edf3 Ta5d6ff"--offline";Te6edf3 Ta5d6ffelseTe6edf3 Ta5d6ffechoTe6edf3 Ta5d6ff"";Te6edf3 Ta5d6fffiTa5d6ff'
Tff7b72LEGACY_ELECTRON_VERSIONTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${LEGACY_ELECTRON_VERSION:-30.0.8}"
Tff7b72WINE_PYTHONTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${WINE_PYTHON:-wineTa5d6ff Ta5d6ffC:/Python314/python.exe}"
Tff7b72DOCKER_COMPOSE_CMDTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_COMPOSE_CMD:-dockerTa5d6ff Ta5d6ffcompose}"
Tff7b72DOCKER_COMPOSE_FILETb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_COMPOSE_FILE:-docker-compose.yml}"
Tff7b72DOCKER_IMAGETb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_IMAGE:-reticulum-meshchatx:local}"
Tff7b72DOCKER_BUILDERTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_BUILDER:-meshchatx-builder}"
Tff7b72DOCKER_PLATFORMSTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_PLATFORMS:-linux/amd64}"
Tff7b72DOCKER_BUILD_FLAGSTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_BUILD_FLAGS:---load}"
Tff7b72DOCKER_BUILD_ARGSTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_BUILD_ARGS:-}"
Tff7b72DOCKER_CONTEXTTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_CONTEXT:-.}"
Tff7b72DOCKERFILETb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKERFILE:-Dockerfile}"
Tff7b72DOCKER_BUILD_IMAGETb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_BUILD_IMAGE:-reticulum-meshchatx-build:local}"
Tff7b72DOCKER_BUILD_FILETb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${DOCKER_BUILD_FILE:-Dockerfile.build}"
Tff7b72ANDROID_DIRTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${ANDROID_DIR:-android}"
Tff7b72PYTHON_SRC_DIRTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${PYTHON_SRC_DIR:-${ANDROID_DIR}/app/src/main/python}"
Tff7b72JNI_LIBS_DIRTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${JNI_LIBS_DIR:-${ANDROID_DIR}/app/src/main/jniLibs}"
Tff7b72RETICULUM_RNS_SRCTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${RETICULUM_RNS_SRC:-./misc/RNS}"
Tff7b72RETICULUM_LXMF_SRCTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${RETICULUM_LXMF_SRC:-./misc/LXMF}"
Tff7b72RETICULUM_LXST_SRCTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${RETICULUM_LXST_SRC:-./misc/LXST}"
Tff7b72SIDEBAND_CODEC2_WHLTb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${SIDEBAND_CODEC2_WHL:-./misc/pycodec2-3.0.1-cp311-cp311-linux_aarch64.whl}"
Tff7b72SIDEBAND_LIB_ARM64Tb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${SIDEBAND_LIB_ARM64:-./misc/libcodec2-arm64-v8a.so}"
Tff7b72SIDEBAND_LIB_ARMEABITb4b4b4:
Tff7b72shTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"${SIDEBAND_LIB_ARMEABI:-./misc/libcodec2-armeabi-v7a.so}"
Tff7b72tasksTb4b4b4:
Tff7b72defaultTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffShowTa5d6ff Ta5d6ffavailableTa5d6ff Ta5d6fftasks
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6fftaskTa5d6ff Ta5d6ff--list
T8b949e# --- Initialization & Dependencies ---
Tff7b72installTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffallTa5d6ff Ta5d6ffdependenciesTa5d6ff Ta5d6ff(frontendTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffbackend)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3depsTb4b4b4:Te6edf3feTb4b4b4, Te6edf3depsTb4b4b4:Te6edf3beTb4b4b4]
Tff7b72install:offlineTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6fffromTa5d6ff Ta5d6ffofflineTa5d6ff Ta5d6ffbundleTa5d6ff Ta5d6ff(air-gappedTa5d6ff Ta5d6ffmachine)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffbashTa5d6ff Ta5d6ffscripts/install-offline.sh
Tff7b72bundle:offlineTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffCreateTa5d6ff Ta5d6ffofflineTa5d6ff Ta5d6ffbundleTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffair-gappedTa5d6ff Ta5d6ffbuildsTa5d6ff Ta5d6ff(onlineTa5d6ff Ta5d6ffmachineTa5d6ff Ta5d6ffonly)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffbashTa5d6ff Ta5d6ffscripts/create-offline-bundle.sh
Tff7b72setup:wineTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffSetupTa5d6ff Ta5d6ffWineTa5d6ff Ta5d6ffenvironmentTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffcross-builds
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff./scripts/setup_wine_env.sh
Tff7b72deps:feTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffNode.jsTa5d6ff Ta5d6ffdependencies
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff'Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffinstall{{ifTe6edf3 Ta5d6ffneTe6edf3 Ta5d6ff.NPM_INSTALL_FLAGSTe6edf3 Ta5d6ff""}}Te6edf3 Ta5d6ff{{.NPM_INSTALL_FLAGS}}{{end}}Ta5d6ff'
Tff7b72deps:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ffdependenciesTa5d6ff Ta5d6ffusingTa5d6ff Ta5d6ffUV
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff'Ta5d6ffuvTe6edf3 Ta5d6ffsyncTe6edf3 Ta5d6ff--groupTe6edf3 Ta5d6ffdev{{ifTe6edf3 Ta5d6ffneTe6edf3 Ta5d6ff.UV_SYNC_FLAGSTe6edf3 Ta5d6ff""}}Te6edf3 Ta5d6ff{{.UV_SYNC_FLAGS}}{{end}}Ta5d6ff'
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6ffscripts/patch_lxst_pyogg_ogg_ctypes.py
Tff7b72setup:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffFullTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ffenvironmentTa5d6ff Ta5d6ffsetup
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff'Ta5d6ffuvTe6edf3 Ta5d6ffsyncTe6edf3 Ta5d6ff--groupTe6edf3 Ta5d6ffdev{{ifTe6edf3 Ta5d6ffneTe6edf3 Ta5d6ff.UV_SYNC_FLAGSTe6edf3 Ta5d6ff""}}Te6edf3 Ta5d6ff{{.UV_SYNC_FLAGS}}{{end}}Ta5d6ff'
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6ffscripts/patch_lxst_pyogg_ogg_ctypes.py
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpipTa5d6ff Ta5d6ffinstallTa5d6ff Ta5d6ffruff
T8b949e# --- Execution ---
Tff7b72runTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6fftheTa5d6ff Ta5d6ffapplication
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3installTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6ff-mTa5d6ff Ta5d6ffmeshchatx.meshchat
Tff7b72devTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffinTa5d6ff Ta5d6ffdevelopmentTa5d6ff Ta5d6ffmodeTa5d6ff Ta5d6ff(buildsTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6fffirst)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6ffrun
Tff7b72startTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6fftheTa5d6ff Ta5d6ffapplicationTa5d6ff Ta5d6ffviaTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffForge
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffstartTa5d6ff"
Tff7b72packageTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffPackageTa5d6ff Ta5d6fftheTa5d6ff Ta5d6ffapplicationTa5d6ff Ta5d6ffwithTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffForge
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffpackageTa5d6ff"
Tff7b72makeTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffGenerateTa5d6ff Ta5d6ffdistributablesTa5d6ff Ta5d6ffwithTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffForge
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffmakeTa5d6ff"
T8b949e# --- Code Quality ---
Tff7b72lintTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffallTa5d6ff Ta5d6fflinters
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3lintTb4b4b4:Te6edf3feTb4b4b4, Te6edf3lintTb4b4b4:Te6edf3beTb4b4b4]
Tff7b72lint:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffallTa5d6ff Ta5d6fflinters
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3lintTb4b4b4:Te6edf3feTb4b4b4, Te6edf3lintTb4b4b4:Te6edf3beTb4b4b4]
Tff7b72lint:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffLintTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ffcodeTa5d6ff Ta5d6ff(ruff)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffruffTa5d6ff Ta5d6ffcheckTa5d6ff Ta5d6ff.
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffruffTa5d6ff Ta5d6ffformatTa5d6ff Ta5d6ff--checkTa5d6ff Ta5d6ff.
Tff7b72lint:feTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffLintTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffcode
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fflintTa5d6ff"
Tff7b72fmt:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffFormatTa5d6ff Ta5d6ffallTa5d6ff Ta5d6ffcode
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3fmtTb4b4b4:Te6edf3feTb4b4b4, Te6edf3fmtTb4b4b4:Te6edf3beTb4b4b4]
Tff7b72fmt:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffFormatTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ffcodeTa5d6ff Ta5d6ff(ruff)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffruffTa5d6ff Ta5d6ffformatTa5d6ff Ta5d6ff./Ta5d6ff Ta5d6ff--excludeTa5d6ff Ta5d6fftests
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffruffTa5d6ff Ta5d6ffcheckTa5d6ff Ta5d6ff--fixTa5d6ff Ta5d6ff./Ta5d6ff Ta5d6ff--excludeTa5d6ff Ta5d6fftests
Tff7b72fmt:feTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffFormatTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffcodeTa5d6ff Ta5d6ff(Prettier/ESLint)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffformatTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fflint:fixTa5d6ff"
T8b949e# --- Testing & Analysis ---
Tff7b72test:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffallTa5d6ff Ta5d6fftests
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3testTb4b4b4:Te6edf3beTb4b4b4, Te6edf3testTb4b4b4:Te6edf3feTb4b4b4, Te6edf3testTb4b4b4:Te6edf3langTb4b4b4]
Tff7b72test:e2eTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffPlaywrightTa5d6ff Ta5d6ffE2ETa5d6ff Ta5d6ff(startsTa5d6ff Ta5d6ffMeshChatTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffVite;Ta5d6ff Ta5d6ffrequiresTa5d6ff Ta5d6ffuv,Ta5d6ff Ta5d6ffcurl,Ta5d6ff Ta5d6ffpnpmTa5d6ff Ta5d6ffexecTa5d6ff Ta5d6ffplaywrightTa5d6ff Ta5d6ffinstallTa5d6ff Ta5d6ffchromium)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fftest:e2eTa5d6ff"
Tff7b72test:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ff(pytest;Ta5d6ff Ta5d6ffincludesTa5d6ff Ta5d6ffperf/memoryTa5d6ff Ta5d6ffprofilingTa5d6ff Ta5d6ff—Ta5d6ff Ta5d6ffsameTa5d6ff Ta5d6ffasTa5d6ff Ta5d6ffGitHubTa5d6ff Ta5d6ffCI)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backendTa5d6ff Ta5d6ff-nTa5d6ff Ta5d6ffautoTa5d6ff Ta5d6ff--cov=meshchatx/src/backend
Tff7b72test:be:covTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffwithTa5d6ff Ta5d6ffdetailedTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6ff(includesTa5d6ff Ta5d6ffperformanceTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffmemoryTa5d6ff Ta5d6ffprofilingTa5d6ff Ta5d6fftests)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backendTa5d6ff Ta5d6ff-nTa5d6ff Ta5d6ffautoTa5d6ff Ta5d6ff--cov=meshchatx/src/backendTa5d6ff Ta5d6ff--cov-report=term-missing
Tff7b72test:be:perfTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBackendTa5d6ff Ta5d6ffperformanceTa5d6ff Ta5d6ffregressionTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffonlyTa5d6ff Ta5d6ff(hotTa5d6ff Ta5d6ffpathsTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffbottlenecks)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backend/test_performance_hotpaths.pyTa5d6ff Ta5d6fftests/backend/test_performance_bottlenecks.py
Tff7b72test:be:fullTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffSameTa5d6ff Ta5d6ffasTa5d6ff Ta5d6fftest:beTa5d6ff Ta5d6ff(fullTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ffsuite)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backendTa5d6ff Ta5d6ff-nTa5d6ff Ta5d6ffautoTa5d6ff Ta5d6ff--cov=meshchatx/src/backend
Tff7b72test:mutationTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffMutationTa5d6ff Ta5d6fftestingTa5d6ff Ta5d6ff(mutmut;Ta5d6ff Ta5d6ffslow;Ta5d6ff Ta5d6ffoptional;Ta5d6ff Ta5d6ffdefaultTa5d6ff Ta5d6fftargetsTa5d6ff Ta5d6ffmeshchat_utils)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffmutmutTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ff"meshchatx.src.backend.meshchat_utils*"
Tff7b72test:feTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffshellTa5d6ff Ta5d6ffunitTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ff(vitest;Ta5d6ff Ta5d6ffexcludesTa5d6ff Ta5d6ffi18nTa5d6ff Ta5d6ff—Ta5d6ff Ta5d6ffseeTa5d6ff Ta5d6fftest:lang;Ta5d6ff Ta5d6ffexcludesTa5d6ff Ta5d6ffLoadTimePerformanceTa5d6ff Ta5d6ff—Ta5d6ff Ta5d6ffuseTa5d6ff Ta5d6fftest:fe:loadtimeTa5d6ff Ta5d6fflocally)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffexecTe6edf3 Ta5d6ffvitestTe6edf3 Ta5d6ffrunTe6edf3 Ta5d6ff--excludeTe6edf3 Ta5d6fftests/frontend/LoadTimePerformance.test.jsTe6edf3 Ta5d6ff--excludeTe6edf3 Ta5d6fftests/frontend/i18n.test.jsTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffexecTe6edf3 Ta5d6ffvitestTe6edf3 Ta5d6ffrunTe6edf3 Ta5d6ff--configTe6edf3 Ta5d6ffvitest.electron.config.jsTa5d6ff"
Tff7b72test:fe:loadtimeTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffOptionalTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffload-timeTa5d6ff Ta5d6ff/Ta5d6ff Ta5d6ffsidebarTa5d6ff Ta5d6ffperformanceTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ff(notTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffinTa5d6ff Ta5d6ffCI)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fftest:loadtimeTa5d6ff"
Tff7b72test:be:media-fuzzTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffHypothesisTa5d6ff Ta5d6fffuzzTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffstickers,Ta5d6ff Ta5d6ffTGS/LottieTa5d6ff Ta5d6ffJSON,Ta5d6ff Ta5d6ffWebM,Ta5d6ff Ta5d6ffGIFs,Ta5d6ff Ta5d6ffpackTa5d6ff Ta5d6ffexports
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backend/test_media_fuzzing.pyTa5d6ff Ta5d6ff-q
Tff7b72test:be:media-httpTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffaiohttpTa5d6ff Ta5d6ffintegrationTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ff/api/v1/stickers,Ta5d6ff Ta5d6ffsticker-packs,Ta5d6ff Ta5d6ffandTa5d6ff Ta5d6ff/api/v1/gifs
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backend/test_media_http_api.pyTa5d6ff Ta5d6ff-q
Tff7b72test:fuzz:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffVitestTa5d6ff Ta5d6fffuzzingTa5d6ff Ta5d6fftagTa5d6ff Ta5d6ffplusTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ffmediaTa5d6ff Ta5d6ffHypothesisTa5d6ff Ta5d6fffuzz
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3testTb4b4b4:Te6edf3beTb4b4b4:Te6edf3media-fuzzTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fftest:fuzzTa5d6ff"
Tff7b72test:fe:covTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffwithTa5d6ff Ta5d6fflineTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6ff(VitestTa5d6ff Ta5d6ffv8)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6fftest:coverageTa5d6ff"
Tff7b72test:langTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6fflocalizationTa5d6ff Ta5d6fftests
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffexecTe6edf3 Ta5d6ffvitestTe6edf3 Ta5d6ffrunTe6edf3 Ta5d6fftests/frontend/i18n.test.jsTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffuvTe6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffpytestTe6edf3 Ta5d6fftests/backend/test_translator_handler.pyTa5d6ff"
Tff7b72test:integrityTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffdataTa5d6ff Ta5d6ffintegrityTa5d6ff Ta5d6fftests
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backend/test_integrity.pyTa5d6ff Ta5d6fftests/backend/test_backend_integrity.py
Tff7b72test:covTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffallTa5d6ff Ta5d6fftestsTa5d6ff Ta5d6ffwithTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6ff(PythonTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffJS/VueTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6fftranslatorTa5d6ff Ta5d6ffpytest)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3testTb4b4b4:Te6edf3beTb4b4b4:Te6edf3covTb4b4b4, Te6edf3testTb4b4b4:Te6edf3feTb4b4b4:Te6edf3covTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ffuvTe6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffpytestTe6edf3 Ta5d6fftests/backend/test_translator_handler.pyTa5d6ff"
Tff7b72benchTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffDefaultTa5d6ff Ta5d6ffbenchmarkTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ff(backendTa5d6ff Ta5d6ffcomprehensiveTa5d6ff Ta5d6ffsuite;Ta5d6ff Ta5d6ffsameTa5d6ff Ta5d6ffasTa5d6ff Ta5d6ffbench:be)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6ffbench:be
Tff7b72bench:beTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ffbenchmarks
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6fftests/backend/run_comprehensive_benchmarks.py
Tff7b72bench:be:extremeTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffextremeTa5d6ff Ta5d6ffstressTa5d6ff Ta5d6ffbenchmarks
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6fftests/backend/run_comprehensive_benchmarks.pyTa5d6ff Ta5d6ff--extreme
Tff7b72profile:memTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffmemoryTa5d6ff Ta5d6ffprofiling
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpytestTa5d6ff Ta5d6fftests/backend/test_memory_profiling.py
Tff7b72checkTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffformatting,Ta5d6ff Ta5d6fflinting,Ta5d6ff Ta5d6ffandTa5d6ff Ta5d6fftestingTa5d6ff Ta5d6ffsequentially
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6fffmt:all
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6fflint:all
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6fftest:all
Tff7b72compileTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffCompileTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffcheckTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffsyntaxTa5d6ff Ta5d6fferrors
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.PYTHON}}Te6edf3 Ta5d6ff-mTe6edf3 Ta5d6ffcompileallTe6edf3 Ta5d6ffmeshchatx/Ta5d6ff"
T8b949e# --- Build & Packaging ---
Tff7b72build:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffprepareTa5d6ff Ta5d6ffbackend
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3installTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuildTa5d6ff"
Tff7b72build:feTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffassets
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3depsTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-frontendTa5d6ff"
Tff7b72build:wheelTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ffwheelTa5d6ff Ta5d6ffpackage
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3installTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffuvTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ff--wheel
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.PYTHON}}Te6edf3 Ta5d6ffscripts/move_wheels.pyTa5d6ff"
T8b949e# --- Electron Distribution ---
Tff7b72dist:linux:appimageTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffAppImageTa5d6ff Ta5d6ff(x64Ta5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffarm64Ta5d6ff Ta5d6ffonly)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ffARCH=x64Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffpnpmTe6edf3 Ta5d6ffexecTe6edf3 Ta5d6ffelectron-builderTe6edf3 Ta5d6ff--linuxTe6edf3 Ta5d6ffAppImageTe6edf3 Ta5d6ff--x64Te6edf3 Ta5d6ff--publish=neverTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ffARCH=arm64Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffpnpmTe6edf3 Ta5d6ffexecTe6edf3 Ta5d6ffelectron-builderTe6edf3 Ta5d6ff--linuxTe6edf3 Ta5d6ffAppImageTe6edf3 Ta5d6ff--arm64Te6edf3 Ta5d6ff--publish=neverTa5d6ff"
Tff7b72dist:linux:arm64Tb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffarm64Ta5d6ff Ta5d6ffAppImage
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ffARCH=arm64Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdistTe6edf3 Ta5d6ff--Te6edf3 Ta5d6ff--linuxTe6edf3 Ta5d6ffAppImageTe6edf3 Ta5d6ff--arm64Ta5d6ff"
Tff7b72dist:win:exeTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffportableTa5d6ff Ta5d6ffEXE
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=win32Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdistTe6edf3 Ta5d6ff--Te6edf3 Ta5d6ff--winTe6edf3 Ta5d6ffportableTa5d6ff"
Tff7b72dist:win:arm64Tb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffarm64Ta5d6ff Ta5d6ffportableTa5d6ff Ta5d6ffEXE
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=win32Te6edf3 Ta5d6ffARCH=arm64Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdistTe6edf3 Ta5d6ff--Te6edf3 Ta5d6ff--winTe6edf3 Ta5d6ffportableTe6edf3 Ta5d6ff--arm64Ta5d6ff"
Tff7b72dist:win:wineTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffEXE/InstallerTa5d6ff Ta5d6ffviaTa5d6ff Ta5d6ffWine
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=win32Te6edf3 Ta5d6ffPYTHON_CMD='{{.WINE_PYTHON}}'Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffnpxTe6edf3 Ta5d6ffelectron-builderTe6edf3 Ta5d6ff--winTe6edf3 Ta5d6ffportableTe6edf3 Ta5d6ffnsisTe6edf3 Ta5d6ff--publish=neverTa5d6ff"
Tff7b72dist:fe:linuxTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffappTa5d6ff Ta5d6ff(prebuiltTa5d6ff Ta5d6ffbackend)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdist:linuxTa5d6ff"
Tff7b72dist:fe:rpmTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffRPMTa5d6ff Ta5d6ffpackage
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdist:rpmTa5d6ff"
Tff7b72dist:fe:flatpakTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffpackage
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdist:flatpakTa5d6ff"
Tff7b72dist:fe:winTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffapps
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdist:windowsTa5d6ff"
Tff7b72dist:fe:zipTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffZIPTa5d6ff Ta5d6ff(Linux)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdist:zipTa5d6ff"
Tff7b72dist:allTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffallTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffappsTa5d6ff Ta5d6ff(LinuxTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffWin)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=win32Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffdistTe6edf3 Ta5d6ff--Te6edf3 Ta5d6ff--linuxTe6edf3 Ta5d6ffAppImageTe6edf3 Ta5d6ffdebTe6edf3 Ta5d6ff--winTe6edf3 Ta5d6ffportableTe6edf3 Ta5d6ffnsisTa5d6ff"
Tff7b72dist:all:wineTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffallTa5d6ff Ta5d6ffElectronTa5d6ff Ta5d6ffappsTa5d6ff Ta5d6ff(LinuxTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffWinTa5d6ff Ta5d6ffviaTa5d6ff Ta5d6ffWine)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffelectron-postinstallTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=linuxTe6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffPLATFORM=win32Te6edf3 Ta5d6ffPYTHON_CMD='{{.WINE_PYTHON}}'Te6edf3 Ta5d6ff{{.NPM}}Te6edf3 Ta5d6ffrunTe6edf3 Ta5d6ffbuild-backendTa5d6ff"
Tb4b4b4- Ta5d6ff"Ta5d6ffnpxTe6edf3 Ta5d6ffelectron-builderTe6edf3 Ta5d6ff--linuxTe6edf3 Ta5d6ffAppImageTe6edf3 Ta5d6ffdebTe6edf3 Ta5d6ff--winTe6edf3 Ta5d6ffportableTe6edf3 Ta5d6ffnsisTe6edf3 Ta5d6ff--publish=neverTa5d6ff"
T8b949e# --- Docker ---
Tff7b72docker:buildTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffDockerTa5d6ff Ta5d6ffimageTa5d6ff Ta5d6ff(buildx)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tb4b4b4|
Tff7b72if ! docker buildx inspect {{.DOCKER_BUILDER}} >/dev/null 2>&1; then
Tff7b72docker buildx create --name {{.DOCKER_BUILDER}} --use >/dev/null
Tff7b72else
Tff7b72docker buildx use {{.DOCKER_BUILDER}}
Tff7b72fi
Tb4b4b4- Tb4b4b4|
Tff7b72docker buildx build --builder {{.DOCKER_BUILDER}} --platform {{.DOCKER_PLATFORMS}} \
Tff7b72{{.DOCKER_BUILD_FLAGS}} \
Tff7b72-t {{.DOCKER_IMAGE}} \
Tff7b72{{.DOCKER_BUILD_ARGS}} \
Tff7b72-f {{.DOCKERFILE}} \
Tff7b72{{.DOCKER_CONTEXT}}
Tff7b72docker:runTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffDockerTa5d6ff Ta5d6ffcontainerTa5d6ff Ta5d6ff(compose)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff'Ta5d6ffMESHCHAT_IMAGE="{{.DOCKER_IMAGE}}"Te6edf3 Ta5d6ff{{.DOCKER_COMPOSE_CMD}}Te6edf3 Ta5d6ff-fTe6edf3 Ta5d6ff{{.DOCKER_COMPOSE_FILE}}Te6edf3 Ta5d6ffupTe6edf3 Ta5d6ff--remove-orphansTe6edf3 Ta5d6ff--pullTe6edf3 Ta5d6ffneverTe6edf3 Ta5d6ffreticulum-meshchatxTa5d6ff'
Tff7b72docker:run:devTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffDockerTa5d6ff Ta5d6ffcontainerTa5d6ff Ta5d6ff(devTa5d6ff Ta5d6ffcompose)
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff'Ta5d6ffMESHCHAT_IMAGE="{{.DOCKER_IMAGE}}"Te6edf3 Ta5d6ff{{.DOCKER_COMPOSE_CMD}}Te6edf3 Ta5d6ff-fTe6edf3 Ta5d6ffdocker-compose.dev.ymlTe6edf3 Ta5d6ffupTe6edf3 Ta5d6ff--buildTe6edf3 Ta5d6ff--remove-orphansTe6edf3 Ta5d6ffreticulum-meshchatxTa5d6ff'
Tff7b72docker:build:envTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffcontainerizedTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffenvironment
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ff-tTa5d6ff Ta5d6ff{{.DOCKER_BUILD_IMAGE}}Ta5d6ff Ta5d6ff-fTa5d6ff Ta5d6ff{{.DOCKER_BUILD_FILE}}Ta5d6ff Ta5d6ff.
Tff7b72docker:build:artifactsTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffexportTa5d6ff Ta5d6ffartifactsTa5d6ff Ta5d6fffromTa5d6ff Ta5d6ffcontainer
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffrmTa5d6ff Ta5d6ff-fTa5d6ff Ta5d6ffmeshchat-build-tempTa5d6ff Ta5d6ff||Ta5d6ff Ta5d6fftrue
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ff--nameTa5d6ff Ta5d6ffmeshchat-build-tempTa5d6ff Ta5d6ff{{.DOCKER_BUILD_IMAGE}}
Tb4b4b4- Ta5d6ffmkdirTa5d6ff Ta5d6ff-pTa5d6ff Ta5d6ffdistTa5d6ff Ta5d6ffpython-dist
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffcpTa5d6ff Ta5d6ffmeshchat-build-temp:/app/dist/.Ta5d6ff Ta5d6ff./dist/
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffcpTa5d6ff Ta5d6ffmeshchat-build-temp:/app/python-dist/.Ta5d6ff Ta5d6ff./python-dist/
Tb4b4b4- Ta5d6ffdockerTa5d6ff Ta5d6ffrmTa5d6ff Ta5d6ffmeshchat-build-temp
T8b949e# --- Android ---
Tff7b72android:initTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffInitializeTa5d6ff Ta5d6ffGradleTa5d6ff Ta5d6ffwrapper
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tb4b4b4|
Tff7b72if [ ! -f "{{.ANDROID_DIR}}/gradle/wrapper/gradle-wrapper.jar" ]; then
Tff7b72echo "Downloading Gradle wrapper jar..."
Tff7b72mkdir -p "{{.ANDROID_DIR}}/gradle/wrapper"
Tff7b72curl -L -o "{{.ANDROID_DIR}}/gradle/wrapper/gradle-wrapper.jar" \
Tff7b72https://raw.githubusercontent.com/gradle/gradle/v8.12.1/gradle/wrapper/gradle-wrapper.jar || \
Tff7b72echo "Failed to download. Please run: cd {{.ANDROID_DIR}} && gradle wrapper --gradle-version 8.12.1"
Tff7b72else
Tff7b72echo "Gradle wrapper already initialized."
Tff7b72fi
Tff7b72android:prepareTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffPrepareTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffsourceTa5d6ff Ta5d6ffassets
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3buildTb4b4b4:Te6edf3feTb4b4b4, Te6edf3androidTb4b4b4:Te6edf3initTb4b4b4]
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tb4b4b4|
Tff7b72echo "Preparing Android assets..."
Tff7b72mkdir -p "{{.PYTHON_SRC_DIR}}"
Tff7b72rm -rf "{{.PYTHON_SRC_DIR}}/meshchatx"
Tff7b72echo "MeshChatX Python tree is synced by Gradle into app/src/main/python/meshchatx (see android/app/build.gradle)."
Tff7b72android:wheelsTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fftheTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ff(Chaquopy)Ta5d6ff Ta5d6ffwheelsTa5d6ff Ta5d6ffintoTa5d6ff Ta5d6ffandroid/vendor/.Ta5d6ff Ta5d6ffMirrorsTa5d6ff Ta5d6ffCI.
Tff7b72varsTb4b4b4:
Tff7b72ANDROID_WHEEL_PYTHONTb4b4b4: Ta5d6ff'Ta5d6ff{{.ANDROID_WHEEL_PYTHONTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"3.11"}}Ta5d6ff'
Tff7b72ANDROID_WHEEL_ABISTb4b4b4: Ta5d6ff'Ta5d6ff{{.ANDROID_WHEEL_ABISTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"arm64-v8a,x86_64,armeabi-v7a"}}Ta5d6ff'
Tff7b72ANDROID_WHEEL_CHAQUOPY_REFTb4b4b4: Ta5d6ff'Ta5d6ff{{.ANDROID_WHEEL_CHAQUOPY_REFTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"9f563f45108a873d7feb363e1f754c0173f1114e"}}Ta5d6ff'
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tb4b4b4|
Tff7b72bash scripts/build-android-wheels-local.sh \
Tff7b72--python-minor "{{.ANDROID_WHEEL_PYTHON}}" \
Tff7b72--chaquopy-ref "{{.ANDROID_WHEEL_CHAQUOPY_REF}}" \
Tff7b72--abis "{{.ANDROID_WHEEL_ABIS}}"
Tff7b72android:buildTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffDebugTa5d6ff Ta5d6ffAPKTa5d6ff Ta5d6ff(universalTa5d6ff Ta5d6ffABITa5d6ff Ta5d6ffpackaging;Ta5d6ff Ta5d6ffarm64-v8aTa5d6ff Ta5d6ffonlyTa5d6ff Ta5d6ffunlessTa5d6ff Ta5d6ffoverridden)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3androidTb4b4b4:Te6edf3prepareTb4b4b4]
Tff7b72varsTb4b4b4:
Tff7b72MESHCHATX_ABISTb4b4b4: Ta5d6ff'Ta5d6ff{{.MESHCHATX_ABISTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"arm64-v8a"}}Ta5d6ff'
Tff7b72MESHCHATX_ABI_PACKAGINGTb4b4b4: Ta5d6ff'Ta5d6ff{{.MESHCHATX_ABI_PACKAGINGTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"universal"}}Ta5d6ff'
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffcdTa5d6ff Ta5d6ff"{{.ANDROID_DIR}}"Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff./gradlewTa5d6ff Ta5d6ff:app:assembleDebugTa5d6ff Ta5d6ff-PmeshchatxAbis={{.MESHCHATX_ABIS}}Ta5d6ff Ta5d6ff-PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}}
Tff7b72android:build:releaseTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffReleaseTa5d6ff Ta5d6ffAPKTa5d6ff Ta5d6ff(sameTa5d6ff Ta5d6ffABITa5d6ff Ta5d6ffdefaultsTa5d6ff Ta5d6ffasTa5d6ff Ta5d6ffandroid:buildTa5d6ff Ta5d6ffunlessTa5d6ff Ta5d6ffoverridden)
Tff7b72depsTb4b4b4: Tb4b4b4[Te6edf3androidTb4b4b4:Te6edf3prepareTb4b4b4]
Tff7b72varsTb4b4b4:
Tff7b72MESHCHATX_ABISTb4b4b4: Ta5d6ff'Ta5d6ff{{.MESHCHATX_ABISTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"arm64-v8a"}}Ta5d6ff'
Tff7b72MESHCHATX_ABI_PACKAGINGTb4b4b4: Ta5d6ff'Ta5d6ff{{.MESHCHATX_ABI_PACKAGINGTe6edf3 Ta5d6ff|Te6edf3 Ta5d6ffdefaultTe6edf3 Ta5d6ff"universal"}}Ta5d6ff'
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffcdTa5d6ff Ta5d6ff"{{.ANDROID_DIR}}"Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff./gradlewTa5d6ff Ta5d6ff:app:assembleReleaseTa5d6ff Ta5d6ff-PmeshchatxAbis={{.MESHCHATX_ABIS}}Ta5d6ff Ta5d6ff-PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}}
Tff7b72android:cleanTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffCleanTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffartifacts
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffcdTa5d6ff Ta5d6ff"{{.ANDROID_DIR}}"Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff./gradlewTa5d6ff Ta5d6ffclean
Tb4b4b4- Ta5d6ffrmTa5d6ff Ta5d6ff-rfTa5d6ff Ta5d6ff"{{.PYTHON_SRC_DIR}}/meshchatx"Ta5d6ff Ta5d6ff"{{.ANDROID_DIR}}/app/src/main/python/meshchatx"
T8b949e# --- Maintenance ---
Tff7b72distTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffAliasTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffdist:linux:appimage
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6ffdist:linux:appimage
Tff7b72cleanTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffNukeTa5d6ff Ta5d6ffallTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffartifactsTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffdependencies
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ffrmTa5d6ff Ta5d6ff-rfTa5d6ff Ta5d6ffnode_modulesTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffdistTa5d6ff Ta5d6ffpython-distTa5d6ff Ta5d6ffmeshchatx/publicTa5d6ff Ta5d6ffbuild-dirTa5d6ff Ta5d6ffout
Tb4b4b4- Tff7b72taskTb4b4b4: Ta5d6ffandroid:clean
Tff7b72locales:genTb4b4b4:
Tff7b72descTb4b4b4: Ta5d6ffGenerateTa5d6ff Ta5d6fflocalizationTa5d6ff Ta5d6fftemplate
Tff7b72cmdsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff{{.PYTHON}}Te6edf3 Ta5d6ffscripts/generate_locale_template.pyTa5d6ff"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────